package org.lc.cmd;

import org.springframework.core.Ordered;
import org.springframework.lang.Nullable;

/**
 * 系统请求处理器
 */
public interface SysReqHandler extends Ordered {
    /**
     * 处理系统请求
     *
     * @param req 系统请求
     * @param chain 处理链
     */
    @Nullable
    void handle(ReceivedSysReq req, SysReqHandlerChain chain);

    /**
     * 内置排序级别参考
     * 过滤器应在10左右，内置过滤器范围：0~20
     * 业务处理应在100左右，内置处理器范围：50~200
     * 默认处理器应该接近int最大值，内置默认处理器是int最大值
     */
    interface Orders {
        /**
         * 起过滤作用，或用于通用的数据读取、设置、修改等操作，非实际处理并产生回复
         */
        int filter = 10;

        /**
         * 实际处理业务，
         */
        int handler = 100;

        /**
         * 默认处理器，此
         */
        int defaultHandler = Integer.MAX_VALUE;
    }
}
